package org.mysofts.eclipseman.exceptions;

import java.io.File;
import java.io.IOException;
import java.text.MessageFormat;

/**
 * Exception levée quand un fichier ne peux pas être géré.
 * 
 * @author reda
 * 
 */
public class UnsupportedFileTypeException extends IOException { // $codepro.audit.disable
																// declareDefaultConstructors
	/**
	 * Serial Id.
	 */
	private static final long serialVersionUID = 1L; // $codepro.audit.disable
														// hidingInheritedFields
	/**
	 * Fichier en question.
	 */
	private final File file;

	// [start] constructeur
	/**
	 * Constructeur.
	 * 
	 * @param message
	 *            Message d'erreur.
	 * @param file
	 *            Fichier en question.
	 */
	public UnsupportedFileTypeException(final String message, final File file) {
		this(MessageFormat.format("{0}: {1}", message, file.getAbsolutePath()),
				file, null);
	}

	/**
	 * Constructeur.
	 * 
	 * @param file
	 *            Fichier en question.
	 * @param cause
	 *            Cause de l'exception.
	 */
	public UnsupportedFileTypeException(final File file, final Throwable cause) {
		this("Le type du fichier n'est pas reconnu", file, cause);
	}

	/**
	 * Constructeur.
	 * 
	 * @param file
	 *            Fichier en question.
	 */
	public UnsupportedFileTypeException(final File file) {
		this(MessageFormat.format(
				"Le type du fichier ''{0}'' n''est pas reconnu",
				file.getAbsolutePath()), file, null);
	}

	/**
	 * Constructeur.
	 * 
	 * @param message
	 *            Message d'erreur.
	 * @param file
	 *            Fichier en question.
	 * @param cause
	 *            Cause de l'exception.
	 */
	public UnsupportedFileTypeException(final String message, final File file,
			final Throwable cause) {
		super(message, cause);
		this.file = file;
	}

	// [end]

	/**
	 * Fichier en question qui a causé l'erreur.
	 * 
	 * @return Fichier qui a causé l'erreur.
	 */
	public final File getFile() {
		return this.file;
	}
}
